package com.enjoyor.soa.traffic.api.service.dubbo.bigdata;

import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

/**
 * 高频车按照实时数据分析服务
 */
public interface DubboAnalyzeRealHighFreqService {
    /**
     * 根据卡口点位分析高频车并获取分析结果
     *
     * @param licenseType 单个号牌类型,必填
     * @param licenseNum  号牌号码
     * @param point       单个卡口点位编码,必填
     * @param passFreq    最少过车次数
     * @param startDay    分析起始日期
     * @param endDay      分析截止日期
     * @param page        页码
     * @return
     */
    ResultPojo getHighFreqByPoints(String token,String licenseType, String licenseNum, String point, int passFreq, String startDay, String endDay, Page page);

    /**
     * 导出根据卡口点位对高频车进行分析的结果
     *
     * @param licenseType 单个号牌类型,必填
     * @param licenseNum  号牌号码
     * @param point       单个卡口点位编码,必填
     * @param passFreq    最少过车次数
     * @param startDay    分析起始日期
     * @param endDay      分析截止日期
     * @param start       导出起始位置
     * @param end         导出截止位置
     * @return  List<HighFreqByPoints>
     */
    ResultPojo expHighFreqByPoints(String token,String licenseType, String licenseNum, String point, int passFreq, String startDay, String endDay, int start, int end);

    /**
     * 根据卡口点位分析高频车,获取分析结果的详情
     *
     * @param licenseType 单个号牌类型,必填
     * @param licenseNum  单个号牌号码,必填
     * @param point       单个卡口点位编码,必填
     * @param startDay    分析起始日期,必填
     * @param endDay      分析截止日期,必填
     * @param page        页码
     * @return
     */
    ResultPojo getHighFreqByPointsDetail(String token,String licenseType, String licenseNum, String point, String startDay, String endDay, Page page) throws Exception;

    /**
     * 根据车辆分析高频车通过的卡口并获取分析结果
     *
     * @param licenseType 单个号牌类型,必填
     * @param licenseNum  单个号牌号码,必填
     * @param point       单个卡口点位编码
     * @param passFreq    最少过车次数
     * @param startDay    分析起始日期
     * @param endDay      分析截止日期
     * @param page        页码
     * @return
     */
    ResultPojo getHighFreqByVehicle(String token,String licenseType, String licenseNum, String point, int passFreq, String startDay, String endDay, Page page);

    /**
     * 导出根据高频车对卡口点位进行分析的结果
     *
     * @param licenseType 单个号牌类型,必填
     * @param licenseNum  单个号牌号码,必填
     * @param point       单个卡口点位编码
     * @param passFreq    最少过车次数
     * @param startDay    分析起始日期
     * @param endDay      分析截止日期
     * @param start       导出起始位置
     * @param end         导出截止位置
     * @return  List<HighFreqByVehicle>
     */
    ResultPojo expHighFreqByVehicle(String token,String licenseType, String licenseNum, String point, int passFreq, String startDay, String endDay, int start, int end);

    /**
     * 根据车辆分析高频车通过的卡口,获取卡口经过时段统计
     *
     * @param licenseType 单个号牌类型,必填
     * @param licenseNum  单个号牌号码,必填
     * @param point       单个卡口点位编码,必填
     * @param startDay    分析起始日期
     * @param endDay      分析截止日期
     * @return  Map<String, Integer>
     */
    ResultPojo getHighFreqByVehicleDetail(String token,String licenseType, String licenseNum, String point, String startDay, String endDay);

}
